package Object类.hashcode方法;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 姚东名
 * Date: 2024-06-19
 * Time: 16:03
 */

/*
回忆刚刚的toString方法的源码：
public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

我们看到了hashCode()这个方法，他帮我算了一个具体的对象位置，这里面涉及数据结构，但是我们还没学数据结
构，没法讲述，所以我们只能说它是个内存地址。然后调用Integer.toHexString()方法，将这个地址以16进制输
出。

hashcode方法源码：
public native int hashCode();

该方法是一个native方法，底层是由C/C++代码写的。我们看不到。

我们认为两个名字相同，年龄相同的对象，将存储在同一个位置，如果不重写hashcode()方法，我们可以来看示例
代码：
 */
class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
public class TestDemo1 {
    public static void main(String[] args) {
        Person person1 = new Person("张三", 10);
        Person person2 = new Person("张三", 10);

        System.out.println(person1.hashCode());
        System.out.println(person2.hashCode());
    }
}

/*
执行结果：
460141958
1163157884
 */

//注意事项：两个对象的hash值是不一样的。
